﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MySql.Data;
using MySql.Data.MySqlClient;

namespace studentskicentarETFa
{
    partial class DAL
    {
        public class ZaposlenikDAO: IDaoCrud<Zaposlenik>
        {
            protected MySqlCommand komanda;

            public long create(Zaposlenik entitet)
            {
                try
                {
                    komanda = new MySqlCommand("insert into Zaposlenici values ('" +
                        entitet.Ime + "', '" + entitet.Prezime + "', '" + entitet.ID_Clana1 + "', '" + entitet.ID_Kartice1 + "', '" + entitet.DatumZaposlenja + "', '" + entitet.BrojTelefona +
                        entitet.VrijemeDolaska.ToString() + "', '" + entitet.VrijemeOdlaska.ToString() + "', '" +
                        entitet.VelicinaPlate + "', '" + entitet.RadnoVrijeme + "', '" + entitet.KoeficijentPlate, con);
                    komanda.ExecuteNonQuery();
                    return komanda.LastInsertedId;
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }

            public Zaposlenik read(Zaposlenik entitet)
            {
                try
                {
                    komanda = new MySqlCommand("select * from Zaposlenici where Zaposlenik_ID = '" + entitet.ID_Clana1.ToString() + "';", con);
                    MySqlDataReader citac = komanda.ExecuteReader();
                    Zaposlenik Zaposlenik = null;
                    while (citac.Read())
                    {
                        //if (entitet.Ime == citac.GetString("ime") && entitet.Prezime == citac.GetString("prezime"))
                        Zaposlenik = new Zaposlenik(citac.GetString("ime"), citac.GetString("prezime"));
                        return Zaposlenik;
                    }
                    return Zaposlenik;
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }

            public Zaposlenik update(Zaposlenik entitet)
            {
                try
                {
                    komanda = new MySqlCommand("update Zaposlenici set ime = '" + entitet.Ime +
                        "', prezime ='" + entitet.Prezime +
                        "', ID_Clana =" + entitet.ID_Clana1.ToString() +
                        ",  ID_Kartice '" + entitet.ID_Kartice1.ToString() +
                        "', BrojTelefona = '" + entitet.BrojTelefona +

                        ", VrijemeDolaska = '" + entitet.VrijemeDolaska +
                        "',VrijemeOdlaska = '" + entitet.VrijemeOdlaska +
                        "', koeficijentPlate = " + entitet.KoeficijentPlate +
                        ", VelicinaPlate = '" + entitet.VelicinaPlate +
                          ", RadnoVrijeme = '" + entitet.RadnoVrijeme +
                        "', datumZaposlenja = ToDate('" + entitet.DatumZaposlenja.ToString() +
                        "', DD.MM.YYYY) where ID_Clana1 = " + entitet.ID_Clana1, con);
                    komanda.ExecuteNonQuery();
                    return read(entitet);
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }

            public void delete(Zaposlenik entitet)
            {
                try
                {
                    komanda = new MySqlCommand("delete from Uposlenici where id = " + entitet.ID_Clana1 + ";", con);
                    komanda.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    throw ex;
                }


            }

            public List<Zaposlenik> getByExample(string name, string value)
            {
                try
                {
                    MySqlCommand n = new MySqlCommand("select *from Zaposlenik where '" + value + "'='" + name + "'", con);
                    List<Zaposlenik> _zaposlenici = new List<Zaposlenik>();
                    MySqlDataReader r = n.ExecuteReader();
                    while (r.Read())
                    {
                        _zaposlenici.Add(new Zaposlenik(r.GetString("Ime"), r.GetString("Prezime")));
                    }
                    return _zaposlenici;
                }
                catch (Exception)
                {
                    throw;
                }
            }

            public List<Zaposlenik> getAll()
            {
                try
                {
                   komanda = new MySqlCommand("select * from zaposleni", con);
                    MySqlDataReader r = komanda.ExecuteReader();
                    List<Zaposlenik> _zaposlenici = new List<Zaposlenik>();
                    while (r.Read())
                        _zaposlenici.Add(new Zaposlenik(r.GetString("ime"), r.GetString("prezime")));
                    return _zaposlenici;
                }
                catch (Exception e)
                {
                    throw e;
                }
            }

            public Zaposlenik getById(int id)
            {

                try
                {
                    MySqlCommand m = new MySqlCommand("select *from Zaposlenik where ID_Clana1=" + id+ "", con);
                    MySqlDataReader r = m.ExecuteReader();
                    Zaposlenik z = null;
                    while (r.Read())
                    {
                        z = new Zaposlenik(r.GetString("Ime"), r.GetString("Prezime"));
                        return z;
                    }
                    return z;
                }
                catch (Exception)
                {
                    throw;
                }


            }

           
        }

    }
}
